煙のような演出で文字が出現する表現

白と黒のグラデーションレイヤー「Dark Gray Solid 10」を作成。[Dark Gray Solid 10 Comp 1]という新規コンポジションを作成し、先ほど作ったレイヤーを入れる。



四角いシェイプレイヤーを作成した後、[Displacement Map](ディスプレイスメントマップ)を適用。ディスプレイスメントマップとは、他のレイヤーを参照し、レイヤーに歪みを加えるエフェクトのこと。


[Use For Horizontal Displacement](水平置き換えに使用)、[Use For Vertical Displacement](垂直置き換えに使用)に[Luminance](輝度)をそれぞれ指定。[Displacement Map Layer](マップレイヤー)の参照先に「Dark Gray Solid 10 Comp 1」を指定。[Max Horizontal Displacement](最大水平置き換え)の値は[450.0]に設定。


[Dark Gray Solid 10 Comp 1]の中にレイヤーを新規作成し、[Fractal Noise]を適用する。モードで[Overlay]を選択し、[Opacity](不透明度)を下げ、スケールを調整。


[Displacement Map]をコピペし、ペーストしたディスプレイスメントマップの[Max Horizontal Displacement Map](最大水平置き換え)をコピー元の値から反転させた値にする。ここでは[450.0]から[-480.0]に。


ふたつのディスプレイスメントマップにそれぞれキーフレームを打つことで、歪んでいる状態と歪んでいない状態から元に戻る動作となり、煙のエフェクトのように見せることができる。



上から下へと歪みが消えていくようなマップを別途用意する。




先のモーションに[Camera Lens Blur](ブラー(カメラレンズ))を加えることで、煙で消えている部分から形が修復されるようなエフェクトを作っていく。[Blur Map](ブラーマップ)>[Layer](レイヤー)に「Dark Gray Solid 10 Comp 1」を指定。[Blur Radius](ブラーの半径)の値を上げ、ボカすことで上部ははっきり、下部は溶けながら形が戻っていくようなエフェクトに仕上げた。

エクスプレッションを駆使した時短術
なぜ効率化するのか?
他部分に凝るための時間を捻出するために効率化することが重要
モーションをつける際、例えば自主制作で10秒程度の歌詞モーションを作るのであれば、いくらでも手間をかけていいかと思います。ただ、1曲分の歌詞モーションを作るとなると、短い曲でも20カット、高速ラップなどで5分程度の曲ならば50カットを超えてくることもあります。そうなったとき、手間のかかるモーションを再現していくと納期に間に合わなくなるという現実的な問題が出てくるんですよね。ただ、「この部分は高速で再現できるな」と分かってさえいれば、安心して他の部分に手間をかけることができます。なので、ここで伝えたいのは時短自体が目標なのではなく、時短することによって他部分に対して試行錯誤したり、凝るための時間を捻出するための効率化が重要だということです。
本来ならば、もっといろいろな部分で効率化はできるかと思いますが、ここではトランスフォームに絞って説明をしていきます。トランスフォームとは、After Effects内のあらゆるレイヤーや画像の位置、大きさ、角度、不透明度などを設定する機能のことです。歌詞モーションを作る際にトランスフォームの活用は必須になります。
❶ Rotation(回転)によるバリエーション
「value」を活用することで簡単にランダム性のある回転をつけられる
通常、シェイプレイヤーなどに回転の動きをつける際は、Rotation(回転)に対してキーフレームを打つ場合が多いかと思います。ただ、複数のレイヤーに対してそのキーフレームをコピー&ペーストして同じ回転モーションをつけてしまうと単調になりがちなので、回転の動きにもバリエーションを出したいですよね。そういうとき、1個1個のレイヤーのキーフレームを再度打ち直さなくともエクスプレッションを活用することで、簡単に複数のレイヤーに対してランダム性のある回転の動きをつけることができます。エクスプレッションとは、プログラミング言語を使って、アニメーションやパラメータを制御する機能のことです。キーフレームを打つ代わりにスクリプトを記述することで、より複雑な動きや自動化を実現できます。
ここでは「value」というメソッドを使います。valueとは、エクスプレッション内でプロパティの現在の値を参照するためのワードで、位置、スケール、回転などのプロパティの値にアクセスしたり、操作することが可能になります。
エクスプレッションとは
プログラミング言語を用いて、キーフレームを打つことなくアニメーションを制御したり、様々なパラメーターを自動化できる機能
エクスプレッションの入力方法
Windowsは[Alt]キー、Macは[option]キーを押しながらストップウォッチのマークをクリックすることでエクスプレッション入力欄が出現し、細かな指示を与えることができる。

使用するエクスプレッション

回転のモーションにバリエーションをつける

エクスプレッション欄に[value * -1]と入力することで、あらかじめ打っておいた回転させるキーフレームの動きに対して、逆回転にすることができる。


[Rotation]を右クリックし、[Copy Expression Only]を選択することでエクスプレッション情報をコピーする。


別のシェイプレイヤーを選択し、ペーストすることでキーフレームの値は変更しないまま、エクスプレッションの情報だけを反映することができる。


時短になる!おすすめAEプラグイン
『Motion Tools Classic』
After Effects用のシンプルかつ軽量なアニメーション支援ツールキット。活用することでワークフローの効率化が実現できる。



● サイトを見る
❷ Opacity(不透明度)によるフェードイン
「linear」の関数を使うことで後からタイミングを揃えることが容易になる
複数のレイヤーのモーション開始タイミングをそれぞれズラしてしまった後に、フェードインのモーションを揃えてつけたい場合があるとします。その際、フェードインのモーションを不透明度のキーフレームで作り、各レイヤーにコピー&ペーストしても、時間を指定しているインジケーターの始点にペーストされてしまうため、タイミングがバラバラになってしまいます。この問題を解消するのが、「linear」という関数です。
先のvalueはシンプルな掛け算でしたが、linearの関数は「time」という記述が冒頭にきた上で4つの値が必要になります。timeとは、インジケーターに対して参照する時間を指定するための記述になり、その上で開始時間、終了時間、開始時の値、終了時の値を指定する必要があります。これによって、どの時間からどの時間まで、どんな風に変化させるのかを指定することが可能になります。
例えば、Opacity(不透明度)のエクスプレッションに「linear(time,0,1,0,100)」と入力すれば、「0秒から1秒の間に、不透明度を0から100に変化させてください」という指示を出すことができます。
使用するエクスプレッション

ただ、このエクスプレッションをそのまま別レイヤーのOpacityにコピー&ペーストしても、それぞれがバラバラのタイミングで動いているレイヤーの場合、フェードインの開始タイミングもそれぞれズレたままになってしまいます。そういった事態を防ぐための記述が「inPoint」になります。
inPointとは、そのレイヤーの開始点を指定する記述となり、エクスプレッションに「linear(time,inPoint,inPoint+1,0,100)」と記述することで、「レイヤーの開始点からその1秒後までの間に、不透明度を0から100に変化させてください」という指示を出すことができます。そうすることで、複数のレイヤーにバラバラのタイミングでのモーションがついていたとしても、全てのレイヤーを冒頭から同時にフェードインさせることが可能になります。歌詞やリップシンクのタイミングに後から動きを合わせたいときなどには、非常に役立つ関数かと思います。
inPoint = レイヤーのインポイント

フェードインのモーションをつける

シェイプレイヤーの[Opacity]にカーソルを合わせ、Windowsは[Alt]キー、Macは[option]キーを押しながらクリック。出現したエクスプレッション欄に[linear(time,inPoint,inPoint+1,0,100)]と入力。


各レイヤーに上記エクスプレッションをコピー&ペーストすることで、冒頭からフェードインする動きをまとめて反映できる。レイヤーが終わる時間を指定したい場合は、[linear(time,outPoint -1,outPoint,100,0)]と指定することでフェードアウトのモーションになる。

❸ Position(位置)の微調整をまとめて行う
エクスプレッションを駆使して基本となるイージングを参照させる
イージングとは動きの速度に緩急をつけることで、緩急のつけ方も楽曲や人によって当然変わります。ただ、リリックモーションにおいては他にもやることが山ほどあるので、基本的に自分で作ったイーズ感というものはよっぽどの変化を持たせたいカットでない限り、同じイーズを使う場合が多いです。そういった際、Position(位置)のキーフレーム情報をコピー&ペーストすると全てのレイヤーが同じ位置になってしまうため、ここでもエクスプレッションを使って、始まりと終わりの位置は違うけれども、動きのニュアンスだけを反映させていきます。
まず、それぞれ違った始点と終点の位置のキーフレームが打たれたレイヤーを複数用意しておきます。次に、基本となるイージングを指定するための親レイヤー(ここでは「mother」という名称)を作り、スライダーを制御するためのエフェクト[Slider Control](スライダーコントロール)を入れ、基本となるイージングを決めていきます。その後、他のカットにこのイージング情報を使いたいときに、これらを参照する関数をPositionのエクスプレッションに入力し、自動化する仕組みを作っておくと便利になります。
使用するエクスプレッション

使用するエクスプレッションについて補足説明をすると、「thisComp.layer」とはイージングを入れるためだけに作ったヌルレイヤーで、「mother」は僕が名前をつけた親レイヤーになります。「effect(“Slider Control”)」とは数値を制御するためのエフェクトで、スライダーの値を調整することで他のプロパティ(不透明度、スケール、位置など)をコントロールできます。「valueAtTime」とは指定時刻のプロパティ値を取得するエクスプレッションになります。この場合、それぞれのレイヤーが始まる瞬間に動き出すような設定にしています。次の行にある[P1]は開始の位置となり、続く[(1)]は1番目のキーフレームを指します。[P2]は終わりの位置となり、続く[(2)]は2番目のキーフレームを指しています。最後の式により、以下のような動きになるよう計算された仕組みになっています。

イージングのデータだけを持ったレイヤーを作る

各々違う始点、終点位置のキーフレームが打たれたシェイプレイヤーを複数用意する。



親レイヤーとなる「mother」を作成し、[Slider Control]のエフェクトを入れ、基本となるイージングを決める。


シェイプレイヤーの[Position]にカーソルを合わせ、Windowsは[Alt]キー、Macは[option]キーを押しながらクリック。出現したエクスプレッション欄に[pos=thisComp.layer(“mother”).effect(“Slider Control”)(1).valueAtTime(time-inPoint);P1=key(1).value;P2=key(2).value;P1+(P2-P1)*pos]と入力。各レイヤーに上記のエクスプレッションをコピー&ペーストすることで、指定したイージングをまとめて反映できる。

「凝る」ための時間を作るために
急な変更にもすぐに対応できることがエクスプレッションを活用する利点
リリックモーションを制作していると、後になって「ここだけ変えたいな」という場面が頻発します。ホワイトブーケでも、MUNIKUさんが「ふわって」という文字に浮遊感を感じさせるようなデザインにしてくれていたので、モーションでもこの文字だけをふわっと動かしたいと思い、別でモーションを作ることにしました。そういった際にもエクスプレッションを活用することで、文字毎に参照するイーズを比較的容易に変更することが可能になります。
このように、「ここだけはこのモーションにしたい」という場合があっても、参照すべきイージングを適宜変えることで急な変更にもすぐに対応できるのがエクスプレッションの強みですね。エクスプレッションを駆使することで時短となり、他のモーション部分に労力を割けるようになりますし、幅も大きく広がることと思いますので、ぜひ皆さんも活用してみてください。
